var http = require('http');
var path = require('path');
var fs = require('fs');
var url = require('url');
var querystring = require('querystring');

var userdata = [];

var server = http.createServer((req,res)=>{
    console.log('请求来了！');
    if(req.url != 'favicon.ico'){
        var u = req.url == '/' ? 'index.html' : req.url;
        var pathname = path.join(__dirname,u);
        if( fs.existsSync( pathname ) ) {
            //读取到的文件内容是 字符串类型 可以直接返回给浏览器
            var data = fs.readFileSync( pathname,'utf-8' );
            res.end(data);
        }else{
            var obj = url.parse( req.url );
            var params = querystring.parse( obj.query )
            
            if( obj.pathname == "/api/add" ){ //处理添加 用户请求
                
                //读取json文件 原有的数据
                userdata = fs.readFileSync(  path.join(__dirname,'./data.json') ,'utf-8' );
                userdata = JSON.parse( userdata );
                //添加用户到数组中
                params.id = userdata.length+1;
                userdata.push( params );

                //写入数据到json文件中
                fs.writeFileSync( path.join(__dirname,'./data.json'), JSON.stringify( userdata ) );

                //userdata 数组, 需要转为字符串 才可以返回给浏览器
                res.end( JSON.stringify( { code:200, userlist: userdata } )  );
            }else if(obj.pathname == '/api/delete'){//处理删除 用户请求
                //接收浏览器传来的id参数
                //读取json文件的内容
                userdata = fs.readFileSync( path.join(__dirname,'./data.json'),'utf-8' );
                userdata = JSON.parse( userdata );
                //查找并删除userdata中对应id的用户
                var i = userdata.findIndex((item) => {
                    return item.id == params.id;
                })
                if( i != -1){
                    userdata.splice( i,1 );
                }
                //重新写入到json文件
                fs.writeFileSync(path.join(__dirname,'./data.json'),JSON.stringify( userdata ))
                //返回最新的所有用户数据到浏览器.
                res.end( JSON.stringify( { code :200, userlist : userdata} ) )

            }else if( obj.pathname == "/api/edit" ){ //处理编辑 用户请求
                //接收浏览器传来的新的用户数据
                //读取json文件的内容
                //查找并替换userdata中对应id的用户
                //重新写入到json文件
            }else if( obj.pathname == "/api/list" ){ //处理查询 用户列表请求
                
                //读取json文件的内容
                var data = fs.readFileSync( path.join(__dirname,'./data.json'),'utf-8' );
                
                //返回到浏览器
                res.end(data);
            }
        }
    }
});
server.listen( 9000,()=>{
    console.log('服务器已启动，运行在9000端口');
} )